package com.aleyn.router.core

import androidx.annotation.Keep

/**
 * @author: Aleyn
 * @date: 2023/7/17 12:16
 *
 * 路由拦截器核心接口。
 * 通过实现此接口，可以创建自定义的路由拦截器，用于在导航过程中执行额外的逻辑，
 * 例如：登录检查、权限申请、数据埋点等。
 *
 * 拦截器会按照添加时指定的优先级顺序执行。
 */
@Keep
interface LRouterInterceptor {

    /**
     * 拦截导航请求。
     *
     * @param navigator 当前的导航器实例，包含了所有的导航信息（如 URL、参数等）。
     * @return 返回一个 [Navigator] 实例以继续导航，或者返回 `null` 来中断本次导航。
     *         你可以修改原始的 `navigator` 对象，也可以返回一个新的 `navigator` 实例。
     */
    fun intercept(navigator: Navigator): Navigator?
}